🎮 Shader 编译器优化实战

📘 30 章 · 从入门到精通 GPU
01Shader编译器概述
  • GPU渲染管线简介
  • 编译器作用与地位
  • HLSL/GLSL/MSL概览
02编译器前端基础
  • 词法&语法分析入门
  • 抽象语法树AST构建
  • 符号表与作用域
03中间表示(IR)设计
  • 为什么需要IR
  • SSA / CFG形式
  • AST到IR转换
04类型系统与语义分析
  • float/int/sampler
  • 类型检查与隐式转换
  • 语义错误处理
05控制流分析
  • 分支与循环
  • 控制流图CFG构建
  • 不可达代码消除
06数据流分析
  • 到达定值分析
  • 活跃变量分析
  • 常量传播与折叠
07死代码消除
  • 基于数据流检测
  • 死代码消除算法
  • Shader特殊场景
08常量折叠与传播
  • 编译期常量计算
  • 常量传播优化
  • Shader实际应用
09公共子表达式消除CSE
  • 局部CSE与全局CSE
  • 值编号技术
  • Shader收益分析
10循环优化
  • 循环不变代码外提
  • 循环展开
  • 循环向量化
11函数内联
  • 内联收益与代价
  • 启发式策略
  • Shader特殊考量
12寄存器分配
  • 寄存器压力分析
  • 图着色分配
  • 线性扫描分配
13指令调度
  • 指令延迟与吞吐量
  • 列表调度算法
  • VLIW指令打包
14纹理与采样器优化
  • 纹理坐标计算优化
  • 采样器状态合并
  • 纹理LOD优化
15数学运算优化
  • 强度削弱(mul→add)
  • 倒数/平方根近似
  • 三角函数优化
16精度管理
  • float/half/fixed选择
  • 精度推导与降级
  • 精度优化陷阱
17条件执行优化
  • 谓词化技术
  • 分支避免策略
  • Select指令利用
18向量化优化
  • 标量到向量转换
  • 向量打包/解包
  • SIMD利用
19内存访问优化
  • 统一内存访问
  • 本地数据共享LDS
  • 带宽优化策略
20编译器后端概述
  • 指令选择
  • 指令调度
  • 寄存器分配·代码发射
21目标代码生成
  • IR到目标指令映射
  • 指令编码
  • 二进制生成
22HLSL编译器优化实践
  • dxc编译器架构
  • HLSL特有优化pass
  • Shader Model 6.x
23GLSL编译器优化实践
  • glslangValidator
  • spirv-opt
  • SPIR-V·Vulkan优化
24MSL编译器优化实践
  • Metal Shader编译器
  • Metal性能调优
  • GPU Family优化
25调试与性能分析工具
  • Shader调试器
  • GPU性能计数器
  • Shader反汇编分析
26编译器测试与验证
  • 正确性测试
  • 性能回归测试
  • 模糊测试Fuzzing
27高级优化技术
  • 自动微分在Shader
  • 机器学习优化决策
  • 多阶段编译
28跨平台Shader编译
  • SPIR-V通用中间格式
  • HLSL→GLSL转换
  • MSL桥接方案
29Shader编译器未来趋势
  • JIT与AOT
  • 可微分渲染&编译器
  • AI辅助Shader生成
30综合实战
  • 源码到优化二进制
  • 完整优化pass管道
  • 性能对比与调优